ASP.NET Core-এ Dependency Injection (DI) একটি বিল্ট-ইন ফিচার, যা কোডের রিইউজেবিলিটি এবং টেস্টেবিলিটি নিশ্চিত করতে সাহায্য করে। Custom Service তৈরি এবং DI এর মাধ্যমে তা ব্যবহার করা ASP.NET Core অ্যাপ্লিকেশনে সাধারণ একটি প্রক্রিয়া। এখানে ধাপে ধাপে Custom Service তৈরি এবং তা DI এর মাধ্যমে ব্যবহার করার পদ্ধতি ব্যাখ্যা করা হলো।
Custom Service হলো এমন একটি ক্লাস, যা নির্দিষ্ট একটি ফিচার বা কার্য সম্পাদনের জন্য ডিজাইন করা হয়।
প্রথমে একটি ইন্টারফেস তৈরি করুন, যা Service এর ফাংশনালিটিগুলো ডিফাইন করবে।
public interface ICustomService
{
string GetMessage();
}
এরপর ইন্টারফেসটি ইমপ্লিমেন্ট করে একটি ক্লাস তৈরি করুন, যেখানে সুনির্দিষ্ট ফাংশনালিটি প্রদান করা হবে।
public class CustomService : ICustomService
{
public string GetMessage()
{
return "Hello from Custom Service!";
}
}
ASP.NET Core-এ Startup.cs
ফাইলের ConfigureServices
মেথডে Custom Service রেজিস্টার করতে হবে।
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
// Custom Service রেজিস্ট্রেশন
services.AddTransient<ICustomService, CustomService>();
}
Transient: প্রতি রিকোয়েস্টে নতুন ইনস্ট্যান্স তৈরি হয়।
services.AddTransient<ICustomService, CustomService>();
Scoped: প্রতি রিকোয়েস্টে একটি ইনস্ট্যান্স তৈরি হয় এবং এটি রিকোয়েস্ট শেষ হওয়া পর্যন্ত থাকে।
services.AddScoped<ICustomService, CustomService>();
Singleton: পুরো অ্যাপ্লিকেশন জুড়ে একটি মাত্র ইনস্ট্যান্স ব্যবহার হয়।
services.AddSingleton<ICustomService, CustomService>();
Custom Service-কে একটি Controller-এ ব্যবহার করতে চাইলে Constructor Injection ব্যবহার করতে হবে।
public class HomeController : Controller
{
private readonly ICustomService _customService;
public HomeController(ICustomService customService)
{
_customService = customService;
}
public IActionResult Index()
{
var message = _customService.GetMessage();
ViewData["Message"] = message;
return View();
}
}
Controller থেকে ডেটা ভিউতে পাঠানো হয়েছে। এখন এই ডেটা ভিউতে প্রদর্শিত হবে।
<h1>@ViewData["Message"]</h1>
Custom Service এর ফাংশনালিটি টেস্ট করার জন্য Mocking Framework ব্যবহার করা যেতে পারে, যেমন Moq।
[Fact]
public void Test_CustomService()
{
var mockService = new Mock<ICustomService>();
mockService.Setup(service => service.GetMessage()).Returns("Test Message");
var controller = new HomeController(mockService.Object);
var result = controller.Index() as ViewResult;
Assert.Equal("Test Message", result.ViewData["Message"]);
}
Custom Service তৈরি এবং DI এর মাধ্যমে তা ব্যবহার করা ASP.NET Core অ্যাপ্লিকেশনে কোড মেইনটেনেন্স এবং স্কেলেবিলিটির জন্য অত্যন্ত কার্যকর। Custom Service-কে DI Container-এ রেজিস্টার করার পর এটি সহজেই অ্যাপ্লিকেশনের যেকোনো স্থানে ইনজেক্ট করা যায়। এটি অ্যাপ্লিকেশনের মডুলার আর্কিটেকচার নিশ্চিত করে এবং টেস্টেবিলিটি বাড়ায়।
common.read_more